package com.ericsson.middleware.ContextBroker;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.annotation.Generated;
import com.fasterxml.jackson.annotation.JsonAnyGetter;
import com.fasterxml.jackson.annotation.JsonAnySetter;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
import org.apache.commons.lang.builder.ToStringBuilder;

@JsonInclude(JsonInclude.Include.NON_NULL)
@Generated("org.jsonschema2pojo")
@JsonPropertyOrder({
	"name",
	"type",
	"value",
	"metadatas"
})
public class Attribute {

	@JsonProperty("name")
	private String name;
	@JsonProperty("type")
	private String type;
	@JsonProperty("value")
	private Object value;
	@JsonProperty("metadatas")
	private List<Metadata> metadatas = new ArrayList<Metadata>();
	@JsonIgnore
	private Map<String, Object> additionalProperties = new HashMap<String, Object>();

	/**
	 *
	 * @return
	 * The name
	 */
	@JsonProperty("name")
	public String getName() {
		return name;
	}

	/**
	 *
	 * @param name
	 * The name
	 */
	@JsonProperty("name")
	public void setName(String name) {
		this.name = name;
	}

	/**
	 *
	 * @return
	 * The type
	 */
	@JsonProperty("type")
	public String getType() {
		return type;
	}

	/**
	 *
	 * @param type
	 * The type
	 */
	@JsonProperty("type")
	public void setType(String type) {
		this.type = type;
	}

	/**
	 *
	 * @return
	 * The value
	 */
	@JsonProperty("value")
	public Object getValue() {
		return value;
	}

	/**
	 *
	 * @param value
	 * The value
	 */
	@JsonProperty("value")
	public void setValue(Object value) {
		this.value = value;
	}

	/**
	 *
	 * @return
	 * The metadatas
	 */
	@JsonProperty("metadatas")
	public List<Metadata> getMetadatas() {
		return metadatas;
	}

	/**
	 *
	 * @param metadatas
	 * The metadatas
	 */
	@JsonProperty("metadatas")
	public void setMetadatas(List<Metadata> metadatas) {
		this.metadatas = metadatas;
	}

	@Override
	public String toString() {
		return ToStringBuilder.reflectionToString(this);
	}

	@JsonAnyGetter
	public Map<String, Object> getAdditionalProperties() {
		return this.additionalProperties;
	}

	@JsonAnySetter
	public void setAdditionalProperty(String name, Object value) {
		this.additionalProperties.put(name, value);
	}

}